package leetCode;

/**
 * 896. 单调数列
 *
 如果数组是单调递增或单调递减的，那么它是单调 的。

 如果对于所有 i <= j，nums[i] <= nums[j]，那么数组 nums 是单调递增的。 如果对于所有 i <= j，nums[i]> = nums[j]，那么数组 nums是单调递减的。

 当给定的数组 nums是单调数组时返回 true，否则返回 false。

 示例 1：
 输入：nums = [1,2,2,3]
 输出：true

 示例 2：
 输入：nums = [6,5,4,4]
 输出：true

 示例 3：
 输入：nums = [1,3,2]
 输出：false

 提示：
 1 <= nums.length <= 105
 -105<= nums[i] <= 105
 */
public class MonotonicArray {
    public static void main(String[] args) {

    }

    //硬性判断，有点长，99/8
    public boolean isMonotonic(int[] nums) {
        if (nums.length == 1) {
            return true;
        }
        int j = 0;
        for (int i = 1;i < nums.length;i++) {
            if (nums[i] == nums[i-1]) {
                continue;
            } else if (j == 0) {
                if (nums[i] > nums[i-1]) {
                    j = 1;
                } else {
                    j = 2;
                }
            } else if (nums[i] > nums[i-1] && j == 2) {
                return false;
            } else if (nums[i] < nums[i-1] && j == 1) {
                return false;
            }
        }
        return true;
    }

    //很巧妙，45/63
    public boolean isMonotonic1(int[] nums) {
        boolean inc = true,dec = true;
        for (int i = 0;i<nums.length-1;i++) {
            if (nums[i] > nums[i+1]) {
                inc = false;
            } else if (nums[i] < nums[i+1]) {
                dec = false;
            }
        }
        return inc || dec;
    }
}
